linux library
LD_LIBRARY_PATH
環境変数でこういうのがあるのをしらなかった。どれだけ知らないか、、
$ grep "PATH" ~/.bashrc
LD_PRELOAD
リンカー?リンカーされる?順番によるエラーもあり得る
その場合、この環境変数を設定しておけば、先にshrared object(xxx.soファイル)を読んでおいてくれる
パスがとおっているかをcheck
$ ldd xxx.so
$ ldd /usr/lib/.../xxxxx.so
print shared object dependencies
更に、対象の soファイルに対して,依存してる soファイルをみる
$ objdump -p hoge.so|grep NEEDED
設定方法
システム全体に設定を反映する場合は、「/etc/ld.so.conf」に記載してあげよう。
/etc/ld.so.conf に記載する
include /etc/ld.so.conf.d/*.conf に記載してもよい
LD_LIBRARY_PATH
これは手軽。.bashrcの肥大化をどう考えるか
LDFLAGS="-L/usr/local/lib -wl, -rpath /usr/local/lib"でコンパイルする。
俺には無縁...
設定のcheck
$ ldconfig -v
自分の場合、1500行くらいでた。dynamic linker...という単語が目に付く。dynamicか否かが問題になることはありそう。
the path which the linker should look in to while linking dynamic libraries/shared libraries.
javaで、よくエラーになるらしい。コンパイルするからか。